<?php
class PeriodosController extends AppController {

	var $name = 'Periodos';
        var $appModule = 'Maestros';
	var $helpers = array('Html', 'Form', 'Number', 'Codigo','GetList');
        var $uses  =array('Periodo');

	function index() {
            $q = $this->getBusqueda($this->data['Periodo']['busqueda']);
            $this->set('q', $q);
            $conditions['Periodo.activo'] = 1;
            if (!empty($q))
                $conditions['OR'] = array(
                    'Periodo.codigo SIMILAR TO'=>$q,
                    'Periodo.descripcion SIMILAR TO'=>"%$q%"
                );
            $this->paginate['Periodo'] = array(
                'conditions'=>$conditions,
                'order'=>'codigo'
            );
            $data = $this->paginate('Periodo');
            $this->set('periodos', $data);
            $this->set('limite', $this->limite);
	}

	function view($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Periodo invalido.', true));
			$this->redirect(array('action'=>'index'));
		}

		$this->set('deposito', $this->Periodo->find('first', array(
                    'conditions'=>array('Periodo.id'=>$id),
                    'contain'=>array()
                )));
	}

	function add() {
		if (!empty($this->data)) {
                        $this->data['Periodo']['activo'] = 1;
                        $this->data['Periodo']['usuario_creacion_id'] = $this->usuarioId();
                        $this->data['Periodo']['fecha_creacion'] = 'now()';

			$this->Periodo->create();
			if ($this->Periodo->save($this->data)) {
				$this->Session->setFlash(__('El Periodo ha sido guardado', true));
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash(__('El Periodo no ha podido ser guardado. Intente nuevamente..', true));
			}
		}
	}

	function edit($id = null) {
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Periodo Invalido', true));
			$this->redirect(array('action'=>'index'));
		}
		if (!empty($this->data)) {
                        $this->data['Periodo']['usuario_modificacion_id'] = $this->usuarioId();
                        $this->data['Periodo']['fecha_modificacion'] = 'now()';
			if ($this->Periodo->save($this->data)) {
				$this->Session->setFlash(__('El Periodo ha sido guardado', true));
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash(__('El Periodo no ha podido se guardado. Intente nuevamente.', true));
			}
		}
		if (empty($this->data)) {
                        $this->Periodo->recursive = -1;
			$this->data = $this->Periodo->read(null, $id);
		}
	}

	function delete($id = null, $verbose = true) {
                if (!$id) {
                    if ($verbose){
                        $this->Session->setFlash(__('Id de Periodo invalido', true));
                        $this->redirect(array('action'=>'index'));
                    }
                    else return false;
                }
                $this->Periodo->recursive = -1;
                $data = $this->Periodo->read(null, $id);
                $data['Periodo']['activo']=0;
                $data['Periodo']['usuario_borrado_id']=$this->usuarioId();
                $data['Periodo']['fecha_borrado']='now()';

                if (!$this->Periodo->save($data) && !verbose)
                        return false;
                if ($verbose){
                    $this->Session->setFlash(__('Periodo eliminado', true));
                    $this->redirect(array('action'=>'index'));
                }
                else return true;
	}

        function process(){// procesa anulaciones y eliminaciones en bloque
            $op = isset($this->params['form']['delete'])?'eliminar':'anular';
            $flag = true;
            $i = 0;
            foreach($this->data as $item){
                if ($item['id']!='0'){
                    if(isset($this->params['form']['delete'])){ // eliminar
                        $flag = $this->delete($item['Periodo']['id'], false);
                    }
                    if (!$flag){
                        $data = $this->Periodo->read(null, $item['Periodo']['id']);
                        $this->Session->setFlash(__("Se ha producido un error al $op el Periodo #".$data['Periodo']['codigo'], true));
                        break;
                    }
                }
                $i++;
            }
            if ($flag && $i > 0){
                $this->Session->setFlash(__("El proceso de $op Periodos se ha realizado con exito.", true));
            }
            $this->redirect(array('action'=>'index'));
        }

}
?>